import { MockMethod } from 'vite-plugin-mock';
import { resultError, resultSuccess, getRequestToken, requestParams } from '../_util';

export function createFakeUserList() {
  return [
    {
      userId: '1',
      username: 'vben',
      realName: 'Vben Admin',
      avatar: 'https://q1.qlogo.cn/g?b=qq&nk=190848757&s=640',
      desc: 'manager',
      password: '123456',
      token: 'fakeToken1',
      homePath: '/dashboard/analysis',
      roles: [
        {
          roleName: 'Super Admin',
          value: 'super',
        },
      ],
    },
    {
      userId: '2',
      username: 'test',
      password: '123456',
      realName: 'test user',
      avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
      desc: 'tester',
      token: 'fakeToken2',
      homePath: '/dashboard/workbench',
      roles: [
        {
          roleName: 'Tester',
          value: 'test',
        },
      ],
    },
  ];
}

const fakeCodeList: any = {
  '1': ['1000', '3000', '5000'],

  '2': ['2000', '4000', '6000'],
};
export default [
  // mock user login
  // {
  //   url: '/api/Permissions/Login',
  //   timeout: 200,
  //   method: 'post',
  //   response: ({ body }) => {
  //     return resultSuccess({});
  //   },
  // },
  // {
  //   url: '/api/Permissions/GetUser',
  //   timeout: 200,
  //   method: 'post',
  //   response: ({ body }) => {
  //     return resultSuccess({ Name: 'czj', Id: 1123 });
  //   },
  // },
  // {
  //   url: '/api/Integration/GetDriverTree',
  //   timeout: 200,
  //   method: 'post',
  //   response: ({ body }) => {
  //     // key: 'Id', title: 'Name', children: 'Children'
  //     return resultSuccess([
  //       {
  //         Id: 1,
  //         Type: 0,
  //         Name: '服务器',
  //         Children: [
  //           {
  //             Id: 1002,
  //             Type: 1,
  //             Name: '驱动1',
  //             Children: [
  //               {
  //                 Id: 2002,
  //                 Type: 2,
  //                 Name: '分组1',
  //               },
  //             ],
  //           },
  //           {
  //             Id: 1003,
  //             Type: 1,
  //             Name: '驱动2',
  //             Children: [
  //               {
  //                 Id: 2003,
  //                 Type: 2,
  //                 Name: '分组2',
  //               },
  //             ],
  //           },
  //           {
  //             Id: 1004,
  //             Type: 1,
  //             Name: '驱动3',
  //             Children: [
  //               {
  //                 Id: 2004,
  //                 Type: 2,
  //                 Name: '分组3',
  //               },
  //             ],
  //           },
  //         ],
  //       },
  //     ]);
  //   },
  // },
  // {
  //   url: '/api/Integration/GetDefaultDriverConfig',
  //   timeout: 200,
  //   method: 'post',
  //   response: ({ body }) => {
  //     return resultSuccess([
  //       {
  //         DriverName: '驱动111',
  //         DriverID: '1',
  //         AssemblyName: '测试一下',
  //         ClassName: '很好',
  //         Argument: {
  //           css: 111,
  //           js: 222,
  //           esr: 333,
  //           ddz: 444,
  //         },
  //       },
  //       {
  //         DriverName: '驱动111-pro',
  //         DriverID: '2',
  //         AssemblyName: '测试一下-pro',
  //         ClassName: '很好-pro',
  //         Argument: {
  //           csspro: 1113,
  //           jspro: 2223,
  //           esrpro: 3333,
  //           ddzpro: 4443,
  //         },
  //       },
  //     ]);
  //   },
  // },
  {
    url: '/basic-api/getUserInfo',
    method: 'get',
    response: (request: requestParams) => {
      const token = getRequestToken(request);
      if (!token) return resultError('Invalid token');
      const checkUser = createFakeUserList().find((item) => item.token === token);
      if (!checkUser) {
        return resultError('The corresponding user information was not obtained!');
      }
      return resultSuccess(checkUser);
    },
  },
  {
    url: '/basic-api/getPermCode',
    timeout: 200,
    method: 'get',
    response: (request: requestParams) => {
      const token = getRequestToken(request);
      if (!token) return resultError('Invalid token');
      const checkUser = createFakeUserList().find((item) => item.token === token);
      if (!checkUser) {
        return resultError('Invalid token!');
      }
      const codeList = fakeCodeList[checkUser.userId];

      return resultSuccess(codeList);
    },
  },
  {
    url: '/basic-api/logout',
    timeout: 200,
    method: 'get',
    response: (request: requestParams) => {
      const token = getRequestToken(request);
      if (!token) return resultError('Invalid token');
      const checkUser = createFakeUserList().find((item) => item.token === token);
      if (!checkUser) {
        return resultError('Invalid token!');
      }
      return resultSuccess(undefined, { message: 'Token has been destroyed' });
    },
  },
  {
    url: '/basic-api/testRetry',
    statusCode: 405,
    method: 'get',
    response: () => {
      return resultError('Error!');
    },
  },
] as MockMethod[];
